using System;
using System.Globalization;
using Medianamik.Core;
using Medianamik.Core.Interfaces;

namespace Medianamik.Client.DAL
{
    public interface INodeRepository
    {
        INodeWrapper NewNode(IMedianamikDTO dto);
        INodeWrapper GetExistingNode(IMedianamikDTO dto);
        void SaveNode(INodeWrapper node);
        void PublishNode(INodeWrapper node, CultureInfo culture, DateTime startDate, DateTime? endDate );
        void SaveAndPublishNode(INodeWrapper node, CultureInfo culture, DateTime startDate, DateTime? endDate);
        void SaveNodeHandlingPositionAndParentNodeId(INodeWrapper node, Guid? parentNodeId, short? position);
        void SaveAndPublishNodeHandlingPositionAndParentNodeId(INodeWrapper node, Guid? parentNodeId, short? position, CultureInfo culture, DateTime startDate, DateTime? endDate);
        void Reorder(Guid id, Guid destinationId, DropPosition position);
        void SetActiveStatus(Guid id, CultureInfo culture, ActiveStatus status);
    }
}